package main

import "fmt"

//鸭子类型（Duck typing）:只要你长得像鸭子，叫起来也像鸭子，那我认为你就是一只鸭子。
//只要有call()方法，在go语言看来，它们就已是 Phone 类型了

type Phone interface {
	call() //接口要求必须实现call方法
}

type Nokia struct {
	name string
}

type Iphone struct {
	color string
}

func (this Nokia) call() {
	fmt.Printf("我是:%s,我可以打电话\n", this.name)
}

func (this Iphone) call() {
	fmt.Println("这个Iphone的颜色是：", this.color)
}

func main() {
	n := Nokia{name: "诺基亚3100"}
	i := Iphone{color: "white"}

	//只有同一个类型的数据，才能装在同一个切片里
	phoneArr := []Phone{n, i}
	phoneArr[0].call() //nokia
	phoneArr[1].call() //iphone
}
